package br.com.foxinline.servico;

import br.com.foxinline.generico.ServicoGenerico;
import br.com.foxinline.modelo.Bairro;
import br.com.foxinline.modelo.ConfigItbi;
import br.com.foxinline.modelo.GrupoBairro;
import java.math.BigDecimal;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.Query;

/**
 *
 * @author nayra
 */
@Stateless
public class GrupoBairroServico extends ServicoGenerico<GrupoBairro> {

    public GrupoBairroServico() {
        super(GrupoBairro.class);
    }

    public List<GrupoBairro> findAll() {
        return super.findAll();
    }

    public List<Bairro> findBairroComGrupo() {
        String query = "SELECT bairro from " + GrupoBairro.class.getSimpleName() + " grupoBairro JOIN grupoBairro.bairros bairro";
        return getEntityManager().createQuery(query).getResultList();
    }

    public List<GrupoBairro> findGrupoBairro(Bairro bairro) {
        String sql = "SELECT grupoBairro from " + GrupoBairro.class.getSimpleName() + " grupoBairro JOIN grupoBairro.bairros bairro"
                + " WHERE bairro = :bairro";
        Query query = getEntityManager().createQuery(sql);
        query.setParameter("bairro", bairro);
        return query.getResultList();
    }

    public BigDecimal vm2PorBairro(Bairro bairro, ConfigItbi configItbi) {
        String q = "SELECT grupoBairro FROM "
                + ConfigItbi.class.getSimpleName()
                + " configItbi JOIN configItbi.gruposBairros grupoBairro"
                + " JOIN grupoBairro.bairros bairro"
                + " where bairro = :bairro and configItbi = :configItbi";
        Query query = getEntityManager().createQuery(q);
        query.setParameter("bairro", bairro);
        query.setParameter("configItbi", configItbi);

        GrupoBairro grupoBairro = (GrupoBairro) query.getResultList().get(0);
        return grupoBairro.getVm2();
    }

    public List<GrupoBairro> findConfigItbi(ConfigItbi configItbi) {
        String sql = "SELECT grupoBairro FROM " + ConfigItbi.class.getSimpleName()
                + " configItbi JOIN configItbi.gruposBairros grupoBairro "
                + "WHERE configItbi = :configItbi";
        Query query = getEntityManager().createQuery(sql);
        query.setParameter("configItbi", configItbi);
        return query.getResultList();
    }
}
